﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;

namespace 教师管理系统
{
    public partial class Login : DevExpress.XtraEditors.XtraForm
    {
        public Login()
        {
            InitializeComponent();
            //窗体淡出
            GlobleVar.Splash.Invoke(new GlobleVar.SideU_D(GlobleVar.Splash.SideDown),1000 );
            //使载入窗口恢复到初始状态            
            GlobleVar.Splash.Invoke(new GlobleVar.ChangeText(GlobleVar.Splash.ChangeText), "");
            GlobleVar.Splash.Invoke(new GlobleVar.ChangeText(GlobleVar.Splash.ChangeProg), "0");
            //隐藏载入窗口而不退出线程
            GlobleVar.Splash.Invoke(new GlobleVar.temp(GlobleVar.Splash.Hide));
            InitUserSet();
        }
        /// <summary>
        /// 初始化用户数据集结构
        /// </summary>
        private static void InitUserSet()
        {
            GlobleVar.UserSet.Tables.Add("LessonTime");
            GlobleVar.UserSet.Tables["LessonTime"].Columns.Add("课程序号");
            GlobleVar.UserSet.Tables["LessonTime"].Columns.Add("起始时间", typeof(DateTime));
            GlobleVar.UserSet.Tables["LessonTime"].Columns.Add("结束时间", typeof(DateTime));
            GlobleVar.UserSet.Tables["LessonTime"].Columns["课程序号"].Unique = true;
            GlobleVar.UserSet.Tables.Add("LessonSet");
        }

        private void Login_FormClosing(object sender, FormClosingEventArgs e)
        {
            GlobleVar.SetMem.Abort();
            Application.Exit();
        }
        #region 登陆界面逻辑
        private void TX_LoginName_Enter(object sender, EventArgs e)
        {
            if (TX_LoginName.Text == "在这里输入您的用户名")
            {
                TX_LoginName.Text = "";
                TX_LoginName.ForeColor = Color.Black;
            }
        }

        private void TX_LoginName_Leave(object sender, EventArgs e)
        {
            if (!Login_SignUp_Model.CheckLogin(TX_LoginName))
            {
                TX_LoginName.Text = "在这里输入您的用户名";
                TX_LoginName.ForeColor = Color.Gray;
            }
        }

        private void TX_Password_Enter(object sender, EventArgs e)
        {
            if(TX_Password.Text== "在这里输入您的密码")
            {
                TX_Password.Text = "";
                TX_Password.ForeColor = Color.Black;
            }
        }

        private void TX_Password_Leave(object sender, EventArgs e)
        {
            if (!Login_SignUp_Model.CheckLogin(TX_Password))
            {
                TX_Password.Text = "在这里输入您的密码";
                TX_Password.ForeColor = Color.Gray;
            }
        }
        [STAThread]
        private void Btn_Login_Click(object sender, EventArgs e)
        {
            if (!Login_SignUp_Model.CheckLogin(TX_LoginName))
            {
                XtraMessageBox.Show("请输入用户名");
            }
            else
            {
                if (!Login_SignUp_Model.CheckLogin(TX_Password))
                {
                    XtraMessageBox.Show("请输入密码");
                }
                else
                {
                    if (Login_SignUp_Model.Login(TX_LoginName.Text, TX_Password.Text))
                    {
                        //设定用户路径
                        GlobleVar.Userpath = GlobleVar.Apppath + "\\UserBin\\" + TX_LoginName.Text;
                        //淡出注册窗体
                        WinAnti.AnimateWindow(this.Handle, 500, WinAnti.AW_SLIDE | WinAnti.AW_HIDE | WinAnti.AW_BLEND);
                        //显示载入中窗体
                        GlobleVar.UserSet.Tables["LessonSet"].WriteXml(GlobleVar.Userpath + "\\LessonSet.xml", XmlWriteMode.WriteSchema);
                        GlobleVar.Splash.Invoke(new GlobleVar.SideU_D(GlobleVar.Splash.SideUp), 1000);
                        GlobleVar.Splash.Invoke(new GlobleVar.temp(GlobleVar.Splash.Show));                        
                        GlobleVar.Splash.Invoke(new GlobleVar.ChangeText(GlobleVar.Splash.ChangeText), "正在启动主窗体");
                        GlobleVar.Splash.Invoke(new GlobleVar.ChangeText(GlobleVar.Splash.ChangeProg), "10");
                        //启动主窗体
                        new System.Threading.Thread(new System.Threading.ThreadStart(delegate { Application.Run(new MainForm()); })).Start();
                        GC.Collect();                        
                        this.Dispose();
                    }
                }
            }
        }
        #endregion
        private void Login_Load(object sender, EventArgs e)
        {
            //由中心向外扩展打开窗口
            WinAnti.AnimateWindow(this.Handle, 500, WinAnti.AW_CENTER);
        }        

        
    }
}